require 'lib/arvore'

class Tradutor
  def initialize
    @valores = [1, 5, 10, 25, 50]
  end

  def conta_troco(quantia)
    raiz = No.new("(count-change  #{quantia})", nil)
    cc(quantia, 5, raiz)
    raiz
  end
  
  def cc(quantia, moedas, raiz)
    filho = No.new("(cc  #{quantia}  #{moedas})", raiz)

    if quantia == 0
      No.new("1", filho, "style=filled,fillcolor=plum")
    elsif quantia < 0 or moedas == 0
      No.new("0", filho)
    else
      cc(quantia, moedas-1, filho)
      cc(quantia-valor(moedas), moedas, filho)
    end

    filho
  end
  
  def valor(moeda)
    @valores[moeda-1]
  end
end
